//1 一维数组中都是数字，想实现数字的从大到小排序
arr = [1, 0, 2, 3, 10, 5]
// sort排序改变原来数组
arr.sort((a, b) => a - b)

// 冒泡排序交换相邻位置
for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr.length - i - 1; j++) {
        if (arr[j] < arr[j + 1]) {
            [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
        }
    }
}
// 快速排序
for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
        if (arr[i] < arr[j]) {
            [arr[i], arr[j]] = [arr[j], arr[i]]
        }
    }
}
console.log(arr)


// 2删除数组中的最后一项内容，请至少写出三种办法
var arr = [1, 2, 5, 40]
// 数组截断改变原来数组
arr.length = arr.length - 1

arr.pop()

arr.splice(arr.length - 1, 1)

// slice不改变原来数组所以从新赋值给arr
arr = arr.slice(0, arr.length - 1)
console.log(arr)


// 3找出数组中的第n项到第m项的内容：
var arr = [1, 2, 5, 40, 10, 20]
// slice返回新数组；不改变原来数组
function func(arr, m, n) {
    return arr.slice(m - 1, n)

}
var res = func(arr, 2, 5)
console.log(res)

// 7获取[n-m]之间的随机整数
function func(n, m) {
    return Math.round(Math.random() * (m - n) + n)

}
var res = func(10, 20)
console.log(res)

// 8把字符串中的某一个字符进行替换 replace
var str = 'abckd'
var res = str.replace('a', 100)
console.log(str, res)


console.log(num)
if (!('num' in window)) {
    var num = 100
}
console.log(num)


var name = '中国'
var age = 5000
// 自执行函数this指代window
name = (function (name, age) {
    arguments[0] = '珠峰'
    age = age || this.age
    console.log(name, age)
})(name)
console.log(name, age)

var num = 1
var obj = { num: 2 }
obj.fn = (function (num) {
    this.num = num * 2
    num++
    return function (n) {
        this.num += n
        num++
        console.log(num)
    }

})(obj.num)
var fn = obj.fn
fn(10)
obj.fn(20)
console.log(num, obj.num)


function Fn(num) {
    this.x = this.y = num
}
Fn.prototype = {
    x: 20,
    sum: function () {
        console.log(this.x + this.y)

    }
}
var f = new Fn(10)
console.log(f.sum === Fn.prototype.sum)
f.sum()
Fn.prototype.sum()
console.log(f.constructor) 